#ifndef HPLC_ZKYS_PROTOCOLCOMMONDATA_H
#define HPLC_ZKYS_PROTOCOLCOMMONDATA_H

#include <QList>
#include <QByteArray>
#include "baseprotocoldata.h"

namespace hplc
{
namespace zkys
{

class HplcZkysMakePacket;
class HplcZkysParseCommonSystemPacket;
class HplcZkysSendCommonSystemPacket;
class HplcZkysCheckPacket;
class HplcZkysProtocolCommonData : public BaseProtocolData
{
public:
    quint8              m_address = 1;

    HplcZkysMakePacket          *m_maker = nullptr;
    HplcZkysParseCommonSystemPacket *m_commonSystemParser = nullptr;
    HplcZkysSendCommonSystemPacket *m_commonSystemSender = nullptr;

    // checker专用
    HplcZkysCheckPacket         *m_checker = nullptr;
    bool				m_retryTimerStart = false;
    int					m_retryTimerCount = 0;
    quint8              m_retryCount = 0; // 重发计数器
    quint8              m_retryNumber = 2; // 重发次数
    bool				m_tickCheckTimerStart = false;
    int					m_tickCheckTimerCount = 0;
    quint8              m_tickCheckCount = 0; // 计数器
    quint8              m_tickCheckNumber = 3; // 次数

    bool				m_tickTimerStart = true;
    int					m_tickTimerCount = 0;
    quint8              m_tickCount = 0; // 计数器
    quint8              m_tickNumber = 3; // 次数

//    // finder专用
//    quint32             m_framePos = 0;
//    QByteArray          m_rxBufferAscii; // 这个缓冲区主要用于Ascii转Hex

//    QByteArray          m_rxBufferHex;

    QByteArray          m_txBufferBeforeEscape; // 注意：这里不包含帧头帧尾
    QList<QByteArray>   m_txBufferBeforeEscapeList; // 注意：这里不包含帧头帧尾
    QList<QByteArray>   m_txBufferAfterEscapeList; // 包含帧头帧尾
};

} // zkys
} // hplc

#endif // HPLC_ZKYS_PROTOCOLCOMMONDATA_H
